Terraform 預設情況下,所有的狀態檔 (state file) 都是存放是本地端。
如果今天是一個團隊要維護基礎架構時,就需要有一個遠端的儲存空間來存放狀態檔。
Terraform 的後端 (Backend) 設定,決定了狀態資料要如何控管。預設的情況會存放狀態檔在本地端,不需要遠端儲存狀態檔案的情況下,基本上不用額外做任何設定。
Terraform 後端的遠端儲存狀態支援多種工具跟雲端服務,自家的 terraform cloud,AWS 的 s3,Consul 等等。因為每個服務提供的功能不一樣,所以支援程度也會有一點不一樣。
基本上,所有 Terraform 例出來的服務都可以儲存狀態資料,但是只有部份的服務支援 「狀態鎖定 (State Locking)」
狀態鎖定 (State Locking) 可以保護狀態資料不會在使用中被其他人改動。操作 Terraform 執行到會修改狀態檔的操作時,都會自動鎖定狀態。如果鎖定狀態失敗,當次的操作就會中止。
後面,我們會使用 AWS S3 來練習設定 Terraform 後端。
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}